#即防止冗余，将其它.py文件会用到的句柄集合到公共部分
import datetime
import os
import sys

from selenium import webdriver
from selenium.webdriver.chrome.service import Service


#因此此时可以用类来封装，以下是python中类的用法
class Driver:
    driver = "" #此时这个就是类内成员变量
    def __init__(self): #这个就是python的类内构造函数
        options = webdriver.ChromeOptions()
        options.page_load_strategy = 'eager'
        self.driver = webdriver.Chrome(service=Service("chromedriver.exe"), options=options)
        self.driver.implicitly_wait(3)

    def saveScreenShot(self):
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        if not os.path.exists("../screenshotDir/" + dirname):
            os.makedirs("../screenshotDir/" + dirname)
        funcName = sys._getframe().f_back.f_code.co_name #获取调用的方法名（从汇编来看就是上一层函数地址）
        filename = funcName + "-" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S") + ".png"
        self.driver.save_screenshot("../screenshotDir/" + dirname + "/" + filename)

#明确，此时浏览器句柄driver，不同页面共用一个即可（因此可以使用单例模式创建driver句柄，以下就是python中单例模式的使用）
BlogDriver = Driver()#即整份代码我们只需要构造一次driver对象


